1. Technical Field
The present invention relates in general to the field of data processing systems, and in particular, the field of storage devices within data processing systems. Still more particularly, the present invention relates to a system and method to improve storage device performance within data processing systems.
2. Description of the Related Art
The Serial Attached Small Computer System Interface (SAS) architecture can support multiple paths from a SAS initiator device to a SAS target device. Multiple paths are possible because most SAS target devices have at least SAS two ports and most SAS Initiator devices have multiple SAS ports. SAS initiator devices, when dispatching tasks to SAS target devices, may utilize different paths based upon path availability. Therefore, if one path is being utilized by another SAS target device that is returning data to the SAS initiator device, the SAS initiator device will connect to the SAS target device via an alternate path to send another task.
Each SAS initiator device path is viewed as a separate SAS initiator device by a SAS target device. The SAS architecture also supports multi-initiator environments, which enable different system SAS initiator devices to talk through the same SAS infrastructure to SAS target devices. SAS target devices are normally configured to maintain a separate task set for each SAS initiator device. The maintenance of different task sets is performed to accommodate error recovery procedures on a per SAS initiator device basis.
Parallel Small Computer System Interface (Parallel SCSI), the predecessor architecture to SAS architecture, supported multi-initiator environments. However, a SCSI Target device only has one path to each initiator device. Therefore, task sets are maintained by each target device on a per SCSI adapter basis.
As previously discussed, SAS target devices maintain separate task sets on a per path basis. Since there may be two or more paths to an SAS initiator device, a single SAS Target device may have two or more task sets for a single SAS initiator device. For example, if a SAS initiator device begins sending sequential tasks (e.g., commands or SCSI command descriptor blocks) to a SAS target device, one task may travel down a first path and a second task may travel down a second path. The SAS target device will keep these sequential tasks in separate task sets. Current SAS implementations do not recognize sequential SCSI commands as being sequential if they are queued in separate task sets. Therefore, if the sequential tasks are sequential write operations that require write operations to positionally-related locations on a hard disk drive, current SAS implementations may result in a first write operation targeting a first disk location, a second write operation targeting a second disk location located at another part of the hard disk, and a third write operation targeting a third disk location very near the first disk location. To perform the three write operations, the hard disk drive needs to rotate the disk to the first disk location, rotate the disk again to the second disk location, and rotate the disk a third time to a third disk location that is near the first disk location. These unnecessary disk rotations drastically affect the performance of the SAS architecture in the case of sequential write operations.
On the other hand, parallel SCSI disk drives keep sequential write operations from the same initiator device in the same task set and will execute a series of sequential write operations without intervening disk rotations. Therefore, there is a need for a system and method for improving sequential SAS disk drives to overcome the aforementioned limitations of the prior art.